package action;

import java.util.ArrayList;
import java.util.List;

import common.DelegaServicos;
import common.Suporte;
import entity.Cidade;
import entity.Imovel;
import entity.Pessoa;
import entity.TipoImovel;

@SuppressWarnings("serial")
public class BuscarImoveis extends Suporte{

	private Pessoa usuario;
	private List<Imovel> listaImoveis;
	private List<TipoImovel> tiposImovel;
	private String tipoId;
	private boolean garagem;
	private List<Cidade> listaCidades;
	private String cidadeId;
	private Cidade cidade;

	public String execute() throws Exception {
		
		DelegaServicos delegador = new DelegaServicos();
		
		this.listaCidades = new ArrayList<Cidade>();
		this.tiposImovel = new ArrayList<TipoImovel>();

		this.listaCidades = delegador.getCidadeController().listaCidades();
		
		this.tiposImovel = TipoImovel.getTipoImovel();
		
		if(isPostMethod()) {
			
			TipoImovel tipoEscolhido = null;
			
			for (TipoImovel tipo : this.tiposImovel) {
				
				if(tipo.getId() == Integer.parseInt(this.tipoId)) {
					
					tipoEscolhido = tipo;
					
				}
				
			}
			
			this.cidade = delegador.getCidadeController().retornaCidade(Integer.parseInt(this.cidadeId));
			
			this.listaImoveis = delegador.getImovelController().buscaImoveis(tipoEscolhido, this.cidade, this.garagem);
			
			for (Imovel imovel : this.listaImoveis) {
				
				if(imovel.getFoto() != null) {
					
					String url = imovel.getFoto().getUrl();
					
					String novaUrl = url.replace("\\", "/");
					
					imovel.getFoto().setUrl(novaUrl);
					
				}
				
			}
			
			return SUCCESS;
			
		} else {
			
			return INPUT;
			
		}
		
	}
	
	public Pessoa getUsuario() {
		return usuario;
	}

	public void setUsuario(Pessoa usuario) {
		this.usuario = usuario;
	}

	public List<Imovel> getListaImoveis() {
		return listaImoveis;
	}

	public void setListaImoveis(List<Imovel> listaImoveis) {
		this.listaImoveis = listaImoveis;
	}

	public List<TipoImovel> getTiposImovel() {
		return tiposImovel;
	}

	public void setTiposImovel(List<TipoImovel> tiposImovel) {
		this.tiposImovel = tiposImovel;
	}

	public String getTipoId() {
		return tipoId;
	}

	public void setTipoId(String tipoId) {
		this.tipoId = tipoId;
	}

	public boolean isGaragem() {
		return garagem;
	}

	public void setGaragem(boolean garagem) {
		this.garagem = garagem;
	}

	public List<Cidade> getListaCidades() {
		return listaCidades;
	}

	public void setListaCidades(List<Cidade> listaCidades) {
		this.listaCidades = listaCidades;
	}
	
	public String getCidadeId() {
		return cidadeId;
	}

	public void setCidadeId(String cidadeId) {
		this.cidadeId = cidadeId;
	}
	
	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}
}
